/********************************************************************************* * Seg 2501, hiver 2002 Devoir # 4 * * fichier Banque.java * contrôlleur du simulateur et * calcule des statistiques * * @author Anne Bertrand * @author Robin Tropper * @refactoredBy Robin Tropper B.Sc.A. * * BOGUE : il arrivait (passé) parfois que les caissières ne voyaient pas que * la banque "est fermée" => résultat: boucle infinie lorsque la caissière cherche * le prochain client. * => DEVRAIT être réglé, mais difficile à prouver formellement. * **********************************************************************************/ import java.util.*; public class Banque { private static int nombreCaisses = 3; private static long duree = 3600; private static boolean heureDeCloture = false; static Timer fini = new Timer(); //temps limite pour l'exécution du programme entier static FileClient fileEntr = new FileClient(300,100,fini,duree, " Entreprise"); static FileClient fileIndiv = new FileClient(50,50,fini,duree," Individu"); /** * Par défaut, il n'y a qu'une file pour entreprises et une file * pour individus. Cette méthode a pour but de favoriser l'extensibilité * dans le cas où multiples files à multiples priorités viendraient. * * @return : la liste des files d'attente en ordre descendant de priorité. * En d'autres mots, parcourir la liste assure le respect des priorités. */ public static synchronized List montreFiles(){ List listeFiles = new ArrayList(); listeFiles.add(0, fileEntr); listeFiles.add(1, fileIndiv); return listeFiles; }//fin montreFiles public static boolean getCloture(){ return heureDeCloture; }//fin getCloture //##### // main //##### public static void main(String[] args) { System.out.println("Simulation pour "+nombreCaisses+" caissi�res sur "+ duree/600+" heures."); System.out.println("Veuillez patienter "+duree/600+ " secondes pour les r�sultats"); fini.schedule(new Terminer(), duree); ThreadGroup caisseGroup = new ThreadGroup("caisseGroup"); Caissiere caisse; System.out.println("NOMBRE CAISSES "+nombreCaisses); for (int k=0; k